const maxWidth = 30;
export default class Particle {
	constructor(canvasInfo) {
		/** @type {{ctx:Uni.CanvasContext,width:number,height:number}} */
		this.canvasInfo = canvasInfo;
		this.data = {}
		this.x = 0;
		this.y = 0;
		this.z = 0;
		this.scale = 1;
		this.alpha = 0;
		this.ballR = 4;

		this.overLay = false;
		this.positionX = 0;
	}

	draw() {
		if (!this.canvasInfo) return;
		const {
			ctx,
			width,
			height
		} = this.canvasInfo


		const {
			x,
			y,
			scale,
			alpha
		} = this


		const sx = x + width / 2;
		const sy = y + height / 2;
		const wordHeight = 12

		// 画文字
		ctx.beginPath()
		ctx.setFillStyle('#dddddd')
		if (this.textWidth === undefined) {
			this.textWidth = ctx.measureText(this.data.text).width
			this.overLay = this.textWidth > maxWidth;
		}

		if (this.overLay) {
			/**——————————————————————————**/
			// // 保存当前画布状态
			// ctx.save();

			// // 设置剪切区域为矩形范围
			// ctx.beginPath();
			// ctx.rect(sx - maxWidth / 2, sy - wordHeight, maxWidth, wordHeight - 2);
			// ctx.clip();
			// // ctx.fillRect(sx - maxWidth / 2, sy - wordHeight, maxWidth, wordHeight - 2);

			// // // 绘制文字
			// ctx.beginPath();
			// ctx.setFillStyle('#fff')
			// ctx.setFontSize(10)
			// ctx.fillText('这是测试文字', sx - maxWidth / 2, sy - wordHeight);
			// // ctx.setGlobalAlpha(alpha);
			// // 恢复画布状态
			// ctx.restore();
			/**——————————————————————————**/
			
			ctx.setFontSize(10)
			ctx.fillText(this.data.text, sx - this.textWidth / 2, sy - wordHeight)
			ctx.setGlobalAlpha(alpha);

		} else {
			ctx.setFontSize(10)
			ctx.fillText(this.data.text, sx - this.textWidth / 2, sy - wordHeight)
			ctx.setGlobalAlpha(alpha);
		}
		ctx.closePath();

		ctx.beginPath()
		ctx.arc(sx, sy, this.ballR * scale * 0.5, 0, 2 * Math.PI)
		ctx.setFillStyle(this.data.color || '#ffffff')
		ctx.setGlobalAlpha(alpha);
		ctx.fill()
		ctx.closePath()
	}
}